* 	Preemptive Multipartism and Democratic Transitions
*   Natán Skigin, University of Georgia
*   Aníbal Pérez-Liñán, University of Notre Dame

*   July 16, 2025

log using "replication_log_PreemptiveMultipartism.smcl", replace

** Set working directory or change to appropriate path
cd "G:\My Drive\Regimes - Anibal & Natan\PSRM\PSRM Replication Data"
use "base_Skigin & Pérez-Liñán_PSRM_final.dta", clear
xtset cowcode year

** Variables:
global fordicts    i.legis11 personal
global controls    frag unrest region e_miinterc e_miinteco pgdp gpgdp oilmin popm al_ethnic al_religion age age2 age3
global controlsiv  	   frag region e_miinterc e_miinteco pgdp gpgdp oilmin popm al_ethnic al_religion
global controls_pre    region e_miinterc e_miinteco pgdp gpgdp oilmin popm al_ethnic al_religion age age2 age3 
global controls_post   frag unrest
global controlsquad    unrest region e_miinterc e_miinteco pgdp gpgdp oilmin popm al_ethnic al_religion age age2 age3
global instruments i.prb45##c.adm_pre1945
global controlsFE    i.legis11 frag unrest personal e_miinterc e_miinteco pgdp gpgdp oilmin popm
global graphspecs graphregion(fcolor(white) lcolor(white) ifcolor(white) ilcolor(white)) ytitle("Risk for regime", s(large)) ylabel(0(.25)1,labs(large)) xtitle(,s(large)) xlabel(,labs(large)) recast(line) recastci(rarea) level(99)

set more off

************************************************************ Paper's tables ******************************************

*** Sequence of models
** Table 1 : Regime Termination (Geddes, Wright & Frantz)
eststo clear
* Correct age
replace age  = age_gwf
replace age2 = age2_gwf
replace age3 = age3_gwf

* 1.1 All Dictatorships, all controls 
logit end1_gwf  $controls $fordicts c.enph                                      if a_1 == 1
	   estimates store M11

* 1.2 Transitions to dictatorship and democracy, all dictatorships, all controls
mlogit end2_gwf $controls $fordicts c.enph                                  	if a_1 == 1
        estimates store M12

* 1.3 Multinomial logit effect on type of democratization	   
logit gwf_topdown  $controls $fordicts c.enph                                      if a_1 == 1
		estimates store M13

	      
* Table 1
esttab M11 M12 M13 using "G:\My Drive\Regimes - Anibal & Natan\PSRM\PSRM Replication Data\Table1.rtf", cell(b(star fmt (%9.2f)) se(par)) ///
       uns drop(: 0.legis11 0: D__A:)  ///
       stats(N ll, fmt(%9.0g %9.3f) labels("N" "Log-L"))starlevels(* 0.05 ** 0.01) ///
	   o(enph 1.legis11 personal $controls ) ///
	   legend label varlabels(_cons Constant) title("Table 1. Regime Termination (Geddes, Wright & Frantz)") mtitles replace
   
** Calculate effect in SDs for Model 1.1
logit end1_gwf $controls $fordicts c.enph if a_1 == 1
summarize enph if a_1 == 1
local sd = r(sd)
local mn = r(mean)
margins, at(enph = (`mn' `=`mn'+`sd'')) post
mat b = r(b)
di "Effect of 1 SD increase in ENPH: " b[1,2] - b[1,1]
	   
** Calculate effect in SDs for Model 1.2 (A-D)
* Step 1: Estimate the multinomial logit model
mlogit end2_gwf $controls $fordicts c.enph if a_1 == 1

* Step 2: Get mean and standard deviation of ENPH
summarize enph if a_1 == 1
local mn = r(mean)
local sd = r(sd)

* Step 3: Predict Pr(A → D) at mean and mean + 1 SD of ENPH
margins, at(enph = (`mn' `=`mn'+`sd'')) predict(pr outcome(3)) post

* Step 4: Calculate and display effect of 1 SD increase
mat b = r(b)
di "Effect of 1 SD increase in ENPH on Pr(A → D): " b[1,2] - b[1,1]

** Calculate effect in SDs for Model 1.3 (top-down)
logit gwf_topdown $controls $fordicts c.enph if a_1 == 1
summarize enph if a_1 == 1
local sd = r(sd)
local mn = r(mean)
margins, at(enph = (`mn' `=`mn'+`sd'')) post
mat b = r(b)
di "Effect of 1 SD increase in ENPH: " b[1,2] - b[1,1]


***** Tables 2 & A9: Endogeneity Models - DV: Democratization 
eststo clear
** Geddes, Wright & Frantz
ivprobit gwf_democratization  $controlsiv $fordicts (c.enph = $instruments )    if a_1 == 1, first
       estimates store M21

** Cheibub, Gandhi & Vreeland
ivprobit cgv_democratization  $controlsiv $fordicts (c.enph = $instruments )    if a_1 == 1, first
       estimates store M22

** Svolik
ivprobit sv_democratization  $controlsiv $fordicts (c.enph = $instruments )     if a_1 == 1, first
      estimates store M23

esttab M21 M22 M23 using "Table2.rtf", cell(b(star fmt (%9.2f)) se(par)) mtitles(GWF CGV Svolik) ///
       nobase ///
       stats(N ll, fmt(%9.0g %9.3f) labels("N" "Log-L"))starlevels(* 0.05 ** 0.01) ///
   	   o(enph 1.legis11 personal $controlsiv ) ///
	   legend label varlabels(_cons Constant) title("Table 2. Endogeneity Models") mtitles replace

	   
************************************************************ APPENDIX ******************************************
*********** TABLES
* Table A1: descriptives
estpost summarize  enph legis11 personal $controls /// 
			polinst_gwf polinst_cgv polinst_sv ef_pre1945 ef1 ///
			adm_pre1945 end1_gwf end1_cgv end1_sv ///
			gwf_democratization cgv_democratization sv_democratization ///
			gwf_topdown if a_1 == 1 
  esttab using "TableA1.rtf", ///
  cells("count(fmt(%9.0f)) mean(fmt(%9.2f)) min(fmt(%9.1f)) max(fmt(%9.1f))") drop(age2 age3) ///
	   legend label title("Table A1. Descriptive Statistics (Dictatorships)") mtitles replace

** Table A2 : Effect of Multipartism (no controls)
eststo clear
* Correct age
replace age  = age_gwf
replace age2 = age2_gwf
replace age3 = age3_gwf
* 1.1 Dictatorships with Legislature
logit end1_gwf   c.enph                                                         ///
      if legis11 == 1 & a_1 == 1
	  estimates store A21
* 1.2 All Dictatorships 
logit end1_gwf   c.enph                                                         ///
                 i.legis11                                                      ///
	  if a_1 == 1
	  estimates store A22
 lincom 1.legis11+enph*4
 
logit gwf_bottomup   c.enph    i.legis11                             if a_1 == 1
	  estimates store A23

 
* Table A2
esttab A21 A22 A23 using "TableA2.rtf", cell(b(star fmt (%9.2f)) se(par)) mtitles("Dictatorships (with a legislature)" "Dictatorships (All cases)") ///
       uns drop(: 0.legis11 ) ///
       stats(N ll, fmt(%9.0g %9.3f) labels("N" "Log-L"))starlevels(* 0.05 ** 0.01) ///
	   legend label varlabels(_cons Constant) title("Table A2. Conditional Estimator of the Effect of Pluralism (no controls)") mtitles replace
	   

*** Regime Termination
eststo clear
** Table A3 : Cheibub, Gandhi & Vreeland
* Correct age
replace age  = age_cgv
replace age2 = age2_cgv
replace age3 = age3_cgv
* A3.1 Dictatorships with legislatures
logit end1_cgv  c.enph i.legis11                                     			if a_1 == 1
		estimates store A31
		
* A3.2 Dictatorships, pretreatment controls 
logit end1_cgv  $controls_pre $fordicts c.enph                                  if a_1 == 1
       estimates store A32	

* A3.3 All Dictatorships, all controls 
logit end1_cgv  $controls $fordicts c.enph                                      if a_1 == 1
       estimates store A33

* A3.4 Transitions to democracy and dictatorship, all dictatorships, all controls
mlogit end2_cgv $controls $fordicts c.enph                                      if a_1 == 1
        estimates store A34

* Table A3
esttab A31 A32 A33 A34 using "TableA3.rtf", cell(b(star fmt (%9.2f)) se(par)) mtitles(Dictats Dictats Dictats Dictats Democracies) ///
       uns drop(: 0.legis11 0: D__A:) ///
       stats(N ll, fmt(%9.0g %9.3f) labels("N" "Log-L"))starlevels(* 0.05 ** 0.01) ///
   	   o(enph 1.legis11 personal $controls ) ///
	   legend label varlabels(_cons Constant) title("Table A3. Regime Termination (Cheibub, Gandhi & Vreeland)") mtitles replace

** Table A4 : Svolik
eststo clear
* Correct age
replace age  = age_sv
replace age2 = age2_sv
replace age3 = age3_sv

* A4.1 Dictatorships with legislatures
logit end1_sv  c.enph  legis11                             						if a_1 == 1
		estimates store A41
		
* A4.2 Dictatorships, pretreatment controls 
logit end1_sv  $controls_pre $fordicts c.enph                                  	if a_1 == 1
       estimates store A42	

* A4.3 All Dictatorships, all controls 
logit end1_sv  $controls $fordicts c.enph                                      	if a_1 == 1
       estimates store A43

* A4.4 Transitions to democracy and dictatorship, all dictatorships, all controls
mlogit end2_sv $controls $fordicts c.enph                                     	if a_1 == 1
        estimates store A44

** Table A4
esttab A41 A42 A43 A44 using "TableA4.rtf", cell(b(star fmt (%9.2f)) se(par)) mtitles(Dictats Dictats Dictats Dictats Democracies) ///
       uns drop(: 0.legis11 0: D__A:)         ///
       stats(N ll, fmt(%9.0g %9.3f) labels("N" "Log-L"))starlevels(* 0.05 ** 0.01) ///
   	   o(enph 1.legis11 personal $controls ) ///
	   legend label varlabels(_cons Constant) title("Table A5. Regime Termination (Svolik)") mtitles replace

	   
** Table A5: Controlling for lagged levels of democracy
eststo clear
replace age  = age_gwf
replace age2 = age2_gwf
replace age3 = age3_gwf

* Autocratic breakdown
logit end1_gwf  $controls $fordicts avgDem5 c.enph                      if a_1 == 1
        estimates store A51
* Type of breakdown
mlogit end2_gwf $controls $fordicts avgDem5 c.enph 						if a_1 == 1
        estimates store A52

* Type of democratization
logit gwf_topdown  $controls $fordicts avgDem5 c.enph           if a_1 == 1
        estimates store A53

	   
esttab A51 A52 A53 using "TableA5.rtf", ///
    cell(b(star fmt(%9.2f)) se(par)) ///
    uns drop(: 0.legis11 0: D__A:) ///
    stats(N ll, fmt(%9.0g %9.3f) labels("N" "Log-L")) starlevels(* 0.05 ** 0.01) ///
    o(enph 1.legis11 personal $controls) ///
    legend label varlabels(_cons Constant) ///
    title("Table A5. Regime Termination (Geddes, Wright & Frantz), Controlling for Lagged Levels of Electoral Democracy") ///
    mtitles("End of regime" "A-to-A" "A-to-D" "Top-down") ///
     replace
		   
** Table A6, A7, A8 - President's share (House) as proxy for concessions
eststo clear
* GWF
replace age  = age_gwf
replace age2 = age2_gwf
replace age3 = age3_gwf
logit end1_gwf  $controls $fordicts c.p_h                                      	if a_1 == 1
       estimates store A61
	   
mlogit end2_gwf $controls $fordicts c.p_h 										if a_1 == 1
       estimates store A62 

logit gwf_topdown  $controls $fordicts c.p_h                                      	if a_1 == 1
       estimates store A63 
 
* Table A6
esttab A61 A62 A63 using "TableA6.rtf", cell(b(star fmt (%9.2f)) se(par)) mtitles("End of regime" "A-to-A" "A-to-D" "Top-Down Democratization") ///
    uns drop(0: D__A:) ///
       nobase ///
       stats(N ll, fmt(%9.0g %9.3f) labels("N" "Log-L"))starlevels(* 0.05 ** 0.01) ///
   	   o(p_h 1.legis11 personal $controls ) ///
	   legend label varlabels(_cons Constant) title("Table A6. Regime Termination with Dictator's Share as Proxy for Concessions (GWF)") mtitles replace

* CGV
eststo clear
replace age  = age_cgv
replace age2 = age2_cgv
replace age3 = age3_cgv
logit end1_cgv  $controls $fordicts c.p_h                                      	if a_1 == 1
       estimates store A71
	   
mlogit end2_cgv $controls $fordicts c.p_h 										if a_1 == 1
       estimates store A72
	   
* Table A7
esttab A71 A72 using "TableA7.rtf", cell(b(star fmt (%9.2f)) se(par)) mtitles("End of regime" "A-to-A" "A-to-D") ///
    uns drop(0: D__A:) ///
       nobase ///
       stats(N ll, fmt(%9.0g %9.3f) labels("N" "Log-L"))starlevels(* 0.05 ** 0.01) ///
   	   o(p_h 1.legis11 personal $controls ) ///
	   legend label varlabels(_cons Constant) ///
	   title("Table A7. Regime Termination with Dictator's Share as Proxy for Concessions (CGV)") ///
	   replace


* Svolik
eststo clear
replace age  = age_sv
replace age2 = age2_sv
replace age3 = age3_sv
logit end1_sv  $controls $fordicts c.p_h                                      	if a_1 == 1
       estimates store A81
	  
mlogit end2_sv $controls $fordicts c.p_h 										if a_1 == 1
       estimates store A82

* Table A8
esttab A81 A82 using "TableA8.rtf", cell(b(star fmt (%9.2f)) se(par)) mtitles("End of regime" "A-to-A" "A-to-D") ///
	   uns drop(0: D__A:) ///
       nobase ///
       stats(N ll, fmt(%9.0g %9.3f) labels("N" "Log-L"))starlevels(* 0.05 ** 0.01) ///
   	   o(p_h 1.legis11 personal $controls ) ///
	   legend label varlabels(_cons Constant) ///
	   title("Table A8. Regime Termination with Dictator's Share as Proxy for Concessions (Svolik)") replace

* Table A9: Same as Table 2	   

***  Tables A10-1 and A10-2: Endogeneity Models Controlling for Contemporary Electoral Systems 
eststo clear
* Geddes, Wright & Frantz
ivprobit gwf_democratization $controlsiv $fordicts ef1 (c.enph = $instruments) if a_1 == 1, first
	estimates store A101

** CGV
ivprobit cgv_democratization $controlsiv $fordicts ef1 (c.enph = $instruments) if a_1 == 1, first
	estimates store A102

** Svolik
ivprobit sv_democratization $controlsiv $fordicts ef1 (c.enph = $instruments) if a_1 == 1, first
	estimates store A103

* Export table
esttab A101 A102 A103 using "TableA10.rtf", ///
	cell(b(star fmt(%9.2f)) se(par)) ///
	mtitles(GWF CGV Svolik) nobase ///
	drop(athrho2_1 lnsigma2) ///
	stats(N ll, fmt(%9.0g %9.3f %9.2f %9.2f) ///
	labels("N" "Log-L" "First-stage F" "Sargan J")) ///
	starlevels(* 0.05 ** 0.01) ///
	o(enph 1.legis11 personal $controlsiv) ///
	legend label varlabels(_cons Constant) ///
	title("Table A10. Endogeneity Models Controlling for Contemporary Electoral Systems") ///
	replace
   

** A11: Controlling for previous instability
eststo clear
* GWF measure
* Correct age
replace age  = age_gwf
replace age2 = age2_gwf
replace age3 = age3_gwf

logit gwf_democratization   $controls $fordicts polinst_gwf c.enph  	if a_1 == 1
       estimates store A111
	   
* CGV measure
replace age  = age_cgv
replace age2 = age2_cgv
replace age3 = age3_cgv

logit cgv_democratization  $controls $fordicts polinst_cgv c.enph 		if a_1 == 1
       estimates store A112
* Svolik measure
replace age  = age_sv
replace age2 = age2_sv
replace age3 = age3_sv

logit sv_democratization $controls $fordicts polinst_sv c.enph         if a_1 == 1
       estimates store A113

* Table A11 - Controlling for Instability
esttab A111 A112 A113 using "Table11.rtf", cell(b(star fmt (%9.2f)) se(par)) mtitles(GWF CGV Svolik) ///
       stats(N ll, fmt(%9.0g %9.3f) labels("N" "Log-L"))starlevels(* 0.05 ** 0.01) ///
	   o(enph 1.legis11 polinst_* personal $controls ) ///
	   legend label varlabels(_cons Constant) drop(0.legis11) ///
	   title("Table A11. Regime Termination, Controlling for Political Instability")  replace
	   
	   
************* Table A12: Fixed Effects, End of Regime Models
eststo clear
** GWF
* Correct age
replace age  = age_gwf
replace age2 = age2_gwf
replace age3 = age3_gwf
* Country FE
xtlogit end1_gwf  $controlsFE age2 age3 age c.enph           if a_1 == 1, fe
    estimates store A121
* Year FE
xtlogit end1_gwf $controlsFE c.enph i.year    if a_1 == 1
    estimates store A122
	
** CGV
replace age  = age_cgv
replace age2 = age2_cgv
replace age3 = age3_cgv

* Country FE
xtlogit end1_cgv  $controlsFE age2 age3 age c.enph    if a_1 == 1, fe
    estimates store A123
* Year FE
xtlogit end1_cgv $controlsFE c.enph i.year    if a_1 == 1
    estimates store A124

** Svolik
replace age  = age_sv
replace age2 = age2_sv
replace age3 = age3_sv

* Country FE
xtlogit end1_sv  $controlsFE age2 age3 age c.enph    if a_1 == 1, fe
    estimates store A125
* Year FE
xtlogit end1_sv $controlsFE c.enph i.year    if a_1 == 1
    estimates store A126

esttab A121 A122 A123 A124 A125 A126 using "TableA12.rtf", ///
    cell(b(star fmt(%9.2f)) se(par)) ///
	drop(0.legis11 *.year lnsig2u) ///    
	stats(N ll, fmt(%9.0g %9.3f) labels("N" "Log-L")) ///
    starlevels(* 0.05 ** 0.01) ///
    o(enph 1.legis11 personal frag unrest personal e_miinterc e_miinteco pgdp gpgdp oilmin popm) ///
    legend label varlabels(_cons Constant) ///
    title("Table A12. End of Regime: Fixed Effects Models") replace

************* Table A13: Fixed Effects, Democratization Models
eststo clear
** GWF
* Correct age
replace age  = age_gwf
replace age2 = age2_gwf
replace age3 = age3_gwf
* Country FE
xtlogit gwf_democratization  $controlsFE age2 age3 age c.enph           if a_1 == 1, fe
    estimates store A131
* Year FE
xtlogit gwf_democratization $controlsFE c.enph i.year    if a_1 == 1
    estimates store A132
	
** CGV
replace age  = age_cgv
replace age2 = age2_cgv
replace age3 = age3_cgv

* Country FE
xtlogit cgv_democratization  $controlsFE age2 age3 age c.enph    if a_1 == 1, fe
    estimates store A133
* Year FE
xtlogit cgv_democratization $controlsFE c.enph i.year    if a_1 == 1
    estimates store A134

** Svolik
replace age  = age_sv
replace age2 = age2_sv
replace age3 = age3_sv

* Country FE
xtlogit sv_democratization  $controlsFE age2 age3 age c.enph    if a_1 == 1, fe
    estimates store A135
* Year FE
xtlogit sv_democratization $controlsFE c.enph i.year    if a_1 == 1
    estimates store A136

esttab A131 A132 A133 A134 A135 A136 using "TableA13.rtf", ///
    cell(b(star fmt(%9.2f)) se(par)) ///
	drop(0.legis11 *.year lnsig2u) ///    
	stats(N ll, fmt(%9.0g %9.3f) labels("N" "Log-L")) ///
    starlevels(* 0.05 ** 0.01) ///
    o(enph 1.legis11 personal frag unrest personal e_miinterc e_miinteco pgdp gpgdp oilmin popm) ///
    legend label varlabels(_cons Constant) ///
    title("Table A13. Democratization: Fixed Effects Models") replace


	   
*********** FIGURES
*** Figure A1: Predicted probabilities
* Correct age
replace age  = age_gwf
replace age2 = age2_gwf
replace age3 = age3_gwf
* Figure A1.1 Dictatorships with legislatures, no controls
logit gwf_democratization 						c.enph i.legis11                            if a_1 == 1
	   estimates store M11
	   margins, at(enph = 0)
       margins, at(enph=(1(1)5))
       marginsplot, name("FA11", replace) title("A1.1 Baseline (GWF)", s(large)) $graphspecs  scheme(plotpain)  // add scheme(s1mono) or scheme(lean1) for better graphs
       graph save FA11 "FA11_GWF-Baseline.gph", replace

* Figure A1.2 All Dictatorships, pretreatment controls 
logit gwf_democratization  $controls_pre $fordicts c.enph                                  if a_1 == 1
	   estimates store M12
	   margins, at(enph = 0 legis11 = 0)
       margins, at(enph=(1(1)5) legis11 = 1)
       marginsplot, name("FA12", replace) title("A1.2 Pretreatment (GWF)", s(large)) $graphspecs scheme(plotpain)
       graph save FA12 "FA12_GWF-Pretreatment.gph", replace

* Figure A1.3 All Dictatorships, all controls 
logit gwf_democratization  $controls $fordicts c.enph                                      if a_1 == 1
	   estimates store M13
	   margins, at(enph = 0 legis11 = 0)
       margins, at(enph=(1(1)5) legis11 = 1)
       marginsplot, name("FA13", replace) title("A1.3 Full controls (GWF)", s(large)) $graphspecs scheme(plotpain)
       graph save FA13 "FA13_GWF-allControls.gph", replace

* Figure A1.4 All Dictatorships, all controls
replace age  = age_cgv
replace age2 = age2_cgv
replace age3 = age3_cgv
logit cgv_democratization  $controls $fordicts c.enph                                      if a_1 == 1
       estimates store A43
       margins, at(enph=(1(1)5) legis11 = 1)
       marginsplot, name("FA14CGV", replace) title("A1.4 Full controls (CGV)", s(large)) $graphspecs scheme(plotpain)
       graph save FA14CGV "F14_CGV-allControls.gph", replace

* Figure A1.5 All Dictatorships, all controls
replace age  = age_sv
replace age2 = age2_sv
replace age3 = age3_sv
logit sv_democratization  $controls $fordicts c.enph                                      	if a_1 == 1
       estimates store A53
       margins, at(enph=(1(1)5) legis11 = 1)
       marginsplot, name("FA15SV", replace) title("A1.5 Full controls (Svolik)", s(large)) $graphspecs scheme(plotpain)
       graph save FA15SV "FA15_SV-allControls.gph", replace

* Merge graphs: Risk of Regime Termination, for Dictatorships
graph combine FA11_GWF-Baseline.gph FA12_GWF-Pretreatment.gph FA13_GWF-allControls.gph F14_CGV-allControls.gph FA15_SV-allControls.gph, ycommon rows(1) xsize(8) ysize(4)
graph save "Figure_A1.gph", replace
graph export Figure_A1.png, replace width(1100) height(450)


******************* Figure A2: SURVIVAL PLOT
* Set survival data
replace age  = age_gwf
* Step 1: Authoritarian Breakdown
stset age, failure(end1_gwf)
sts graph if age <= 50 & a_1 == 1, by(enph_group) ///
     ytitle("Survival Probability") xtitle("Regime Age") ///
     title("(a) Authoritarian Breakdown", size(medium)) ///
     legend(off) ///
     name(auth_breakdown, replace)

* Step 2: Bottom-Up Democratization
stset age, failure(gwf_bottomup)
sts graph if age <= 50 & a_1 == 1, by(enph_group) ///
    ytitle("Survival Probability") xtitle("Regime Age") ///
    title("(b) Bottom-Up Democratization", size(medium)) ///
    legend(rows(1) label(1 "ENP ≤ 1") label(2 "1 < ENP ≤ 2") label(3 "ENP > 2")) ///
    name(bottomup, replace)

* Step 3: Top-Down Democratization
stset age, failure(gwf_topdown)
sts graph if age <= 50 & a_1 == 1, by(enph_group) ///
    ytitle("") xtitle("Regime Age") ///
    title("(c) Top-Down Democratization", size(medium)) ///
    legend(off) ///
    name(topdown, replace)

* Merge and save	
grc1leg auth_breakdown bottomup topdown, legendfrom(bottomup) cols(3) ///
	graphregion(color(white)) name(survival_km_combined, replace)
graph export "Survival_ENPH_Combined_LegendBottom.png", width(3000) replace

	  
*** Correlation between pre1945 electoral systems, contemporary systems, and democratization
cor ef_pre1945 ef1 if a_1 == 1
cor ef_pre1945 end1_gwf if a_1 == 1

log close
